#include <sys/memory.h>
#include <yonex/types.h>
#include <yonex/debug.h>
#include <sys/printk.h>
#include <assert.h>

#define LOGK(fmt, args...)  DEBUGK(fmt, ##args)

#define ZONE_AVAILIBLE	1
#define ZONE_RESERVED	2

typedef struct ards_t
{
	u64 BaseAddr;	// 基地址
	u64 Lenth; 		// 内存长度高32位
	u32 Type;       // 本段内存的类型
} __attribute__((packed)) ards_t;

void memory_init(void *ards_ptr)
{
	assert(ards_ptr);
	u32 ards_count = *(u32 *)ards_ptr;
	printk("Memory Struct Table:\n");
	for(int i = 0; i < ards_count; i++) {
		ards_t *ards = ards_ptr + 4 + i * 20;
		printk("[%d] %#12lx %#12lx\t%d\n",
			i, ards->BaseAddr, ards->Lenth,
			ards->Type);
	}
}
